argv[1] 复制到char str[]

来源:百度知道 编辑:UC知道 时间:2024/07/02 15:51:57
int main(int argc, char* argv[])
{
char str[];
if(argc==2)
{
//怎么将argv[1]中的内容复制到str中?
}
}
---------------------------------------------

int i=0;
while((char)(*(argv[1]+i))!=0){
str[i]=(char)(*(argv[1]+i));
++i;
}
str[i]='\0';
这样写溢出了。。
----------------------------------------
strcpy(str,argv[1]);
这样写如果输入(cd到文件夹了)tmp ssss
str=="s"
-------怎么做??
这个argv[1]我是用来接收文件名(.txt)的,要打开的,而且后面要修改str打开别的文件的的,所以不能直接用。
只要把argv[1]中的内容复制到str中就可以了。别的都能搞,就这个没弄好。
后面都直接处理str了,现还就是argv[1]中的东西传不过来。
-----------------------------------------------------------------------------
char str[64]="abcd";
然后,strcpy(str,argv[1]);
仍然是只有第一个字符~

FILE * input_file;
(input_file = fopen(argv[1], 0)) == NULL)

可能是我理解能力的问题,我还没有理解清楚你的意思

如果把文件名当参数,可以直接使用的。

直接使用 std::string 吧,没必要再去自己处理字符串了。

你 char str[]; 后就直接用了?这没语法错误?

char str[];
你没有给str分配空间,当然只有一个"s"罗,得new一个空间或者用数组char str[30]="",再strcpy

#include "stdafx.h"
#include "string.h"
#include "stdlib.h"
int main(int argc, char* argv[])
{
char str[60]="";
if(argc==2)
strcpy(str,argv[1]);
printf("%s\n",str);
system("pause");
return 0;
}
可以显示,你再检查其他地方吧